package com.ihunanren.biz.weixin;

import org.springframework.beans.BeanUtils;

import com.ihunanren.biz.weixin.domain.WeixinImageMsg;
import com.ihunanren.biz.weixin.domain.WeixinLinkMsg;
import com.ihunanren.biz.weixin.domain.WeixinLocationMsg;
import com.ihunanren.biz.weixin.domain.WeixinMsg;
import com.ihunanren.biz.weixin.domain.WeixinTextMsg;
import com.ihunanren.common.Pair;
import com.ihunanren.dao.WeixinMsgPojo;
import com.ihunanren.dao.WeixinMsgType;
import com.ihunanren.dao.pojo.WeixinImageMsgDO;
import com.ihunanren.dao.pojo.WeixinLinkMsgDO;
import com.ihunanren.dao.pojo.WeixinLocationMsgDO;
import com.ihunanren.dao.pojo.WeixinTextMsgDO;

/**
 * @author kalman03
 */
public class WeixinMsgHelper {
	public static Pair<? extends WeixinMsgPojo, WeixinMsgType> toWeixinNormalMsgDO(Pair<? extends WeixinMsg, WeixinMsgType> pair,long id){
		WeixinMsgType msgType = pair.snd;
		if(msgType == WeixinMsgType.TEXT){
			return new Pair<WeixinTextMsgDO, WeixinMsgType>(toWeixinTextMsgDO((WeixinTextMsg) pair.fst, id),msgType);
		}else if(msgType == WeixinMsgType.IMAGE){
			WeixinImageMsgDO weixinImageMsgDO = toWeixinImageMsgDO((WeixinImageMsg) pair.fst, id);
			return new Pair<WeixinImageMsgDO, WeixinMsgType>(weixinImageMsgDO,msgType);
		}else if(msgType == WeixinMsgType.LINK){
			WeixinLinkMsgDO weixinLinkMsgDO = toWeixinLinkMsgDO((WeixinLinkMsg) pair.fst, id);
			return new Pair<WeixinLinkMsgDO, WeixinMsgType>(weixinLinkMsgDO,msgType);
		}else if(msgType == WeixinMsgType.LOCATION){
			WeixinLocationMsgDO weixinLocationMsgDO = toWeixinLocationMsgDO((WeixinLocationMsg) pair.fst, id);
			return new Pair<WeixinLocationMsgDO, WeixinMsgType>(weixinLocationMsgDO,msgType);
		}else if(msgType == WeixinMsgType.EVENT){
			//FIXME 
		}
		return null;
	}
	
	public static WeixinTextMsgDO toWeixinTextMsgDO(WeixinTextMsg weixinTextMsg,long id){
		WeixinTextMsgDO weixinTextMsgDO = new WeixinTextMsgDO();
		BeanUtils.copyProperties(weixinTextMsg, weixinTextMsgDO);
		weixinTextMsgDO.setId(id);
		return weixinTextMsgDO;
	}
	
	public static WeixinImageMsgDO toWeixinImageMsgDO(WeixinImageMsg weixinImageMsg,long id){
		WeixinImageMsgDO weixinImageMsgDO = new WeixinImageMsgDO();
		BeanUtils.copyProperties(weixinImageMsg, weixinImageMsgDO);
		weixinImageMsgDO.setId(id);
		return weixinImageMsgDO;
	}
	
	public static WeixinLinkMsgDO toWeixinLinkMsgDO(WeixinLinkMsg weixinlinkMsg,long id){
		WeixinLinkMsgDO weixinLinkMsgDO = new WeixinLinkMsgDO();
		BeanUtils.copyProperties(weixinlinkMsg, weixinLinkMsgDO);
		weixinLinkMsgDO.setId(id);
		return weixinLinkMsgDO;
	}
	
	public static WeixinLocationMsgDO toWeixinLocationMsgDO(WeixinLocationMsg weixinLocationMsg,long id){
		WeixinLocationMsgDO weixinLocationMsgDO = new WeixinLocationMsgDO();
		BeanUtils.copyProperties(weixinLocationMsg, weixinLocationMsgDO);
		weixinLocationMsgDO.setId(id);
		return weixinLocationMsgDO;
	}
}
